package ejb;

import java.util.Calendar;
import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;

import entities.Articulo;
import entities.Electrodomestico;
import entities.Infantil;
import entities.Moda;
import entities.Mueble;


@Stateless
public class AdministradorArticuloBean implements AdministradorArticulo{

	@PersistenceContext
    private EntityManager entityManager;
    
	
	@Override
	public void guardarArticuloElectrodomesticos(Electrodomestico e) {
		entityManager.persist(e);
		
	}

	@Override
	public void guardarArticuloMuebles(Mueble m) {
		entityManager.persist(m);
		
	}

	@Override
	public void guardarArticuloInfantil(Infantil i) {
		entityManager.persist(i);
		
	}

	@Override
	public void guardarArticuloModa(Moda m) {
		entityManager.persist(m);
		
	}

	@Override
	public void guardarArticulo(entities.Articulo articulo) {
		entityManager.persist(articulo);
	}

	@Override
	public entities.Articulo obtenerArticulo(entities.Articulo articulo) {
		
		Articulo resultado = new Articulo();
		
		TypedQuery<Articulo> q = entityManager.createQuery("from Articulo a where a.codigo = "+ articulo.getCodigo(), Articulo.class);
		resultado = q.getSingleResult();
		
		return resultado;
	}
	
	@Override
	public entities.Articulo obtenerArticulo(int codigo) {
		
		Articulo resultado = new Articulo();
		
		TypedQuery<Articulo> q = entityManager.createQuery("from Articulo a where a.codigo = "+ codigo, Articulo.class);
		resultado = q.getSingleResult();
		
		return resultado;
	}
	
	@Override
	public void actualizarRanking(int codigo, int pos) {
		Articulo a = obtenerArticulo(codigo);
		a.setBestSeller(true);
		a.setPosicionRanking(pos);
		a.setUltimaActRanking(Calendar.getInstance().getTime());
		
	}

	@Override
	public List<Articulo> getArticulos() {
		
		TypedQuery<Articulo> q = entityManager.createQuery("from Articulo", Articulo.class);
		List<Articulo> resultado = q.getResultList();
		
		return resultado;
	}

	@Override
	public Electrodomestico obtenerArtElectrodomestico(int codigo) {
		
		Electrodomestico resultado = new Electrodomestico();
		
		TypedQuery<Electrodomestico> q = entityManager.createQuery("from Electrodomestico e where e.codigo = "+ codigo, Electrodomestico.class);
		resultado = q.getSingleResult();
		
		return resultado;
		
	}

	@Override
	public Infantil obtenerArtInfantil(int codigo) {
		
		Infantil resultado = new Infantil();
		
		TypedQuery<Infantil> q = entityManager.createQuery("from Infantil i where i.codigo = "+ codigo, Infantil.class);
		resultado = q.getSingleResult();
		
		return resultado;
		
	}

	@Override
	public Moda obtenerArtModa(int codigo) {
		
		Moda resultado = new Moda();
		
		TypedQuery<Moda> q = entityManager.createQuery("from Moda m where m.codigo = "+ codigo, Moda.class);
		resultado = q.getSingleResult();
		
		return resultado;
		
	}

	@Override
	public Mueble obtenerArtMueble(int codigo) {

		Mueble resultado = new Mueble();
		
		TypedQuery<Mueble> q = entityManager.createQuery("from Mueble m where m.codigo = "+ codigo, Mueble.class);
		resultado = q.getSingleResult();
		
		return resultado;
		
	}

	
	
}
